/**
 * name: 全局工具方法
 * author: howard.wanghao
 * time: 2018/9/4
 */
export default {
    // 判断空数组(为空返回true)
    emptyArray(arr) {
        return arr.every((item, index) => {
            return !item || item === undefined || item === "";
        });
    },
    // 乘法
    accMul(arg1, arg2) {
        let m = 0;
        let s1 = arg1.toString();
        let s2 = arg2.toString();
        try {
            m += s1.split(".")[1].length;
        } catch (e) {};
        try {
            m += s2.split(".")[1].length;
        } catch (e) {};
        return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
    },
    /*
    * 冒泡排序
    * 请使用 arr = [{label: "", ...}, {label: "", ...}] 数组对象模型传入（也可以排正常数组）
    * arr传入数组 label传入想排序的对象中要比对属性的 "属性名" 如 bubbleSort(array, "name");
    * type: normal 从小到大 inverted 从大到小
    */
    bubbleSort(arr, label, type) {
        for (let i = 0; i < arr.length; i++) {
            for (let j = 0; j < arr.length - 1 - i; j++) {
                if (label) {
                    if (Number(arr[j][label]) > Number(arr[j + 1][label])) {
                        let temp = arr[j + 1];
                        arr[j + 1] = arr[j];
                        arr[j] = temp;
                    }
                } else {
                    if (Number(arr[j]) > Number(arr[j + 1])) {
                        let temp = arr[j + 1];
                        arr[j + 1] = arr[j];
                        arr[j] = temp;
                    }
                }
            }
        }
        if (type === "inverted") {
            let array = [];
            for (let i = arr.length - 1; i >= 0; i--) {
                array.push(arr[i]);
            }
            return array;
        } else {
            return arr;
        }
    },
    /*
    * 数组深复制
    */
    deepCopy(arr) {
        // 只拷贝对象
        if (typeof arr !== "object") return;
        // 根据arr的类型判断是新建一个数组还是一个对象
        let newObj = arr instanceof Array ? [] : {};
        for (let key in arr) {
            // 遍历arr,并且判断是arr的属性才拷贝
            if (arr.hasOwnProperty(key)) {
                // 判断属性值的类型，如果是对象递归调用深拷贝
                newObj[key] = typeof arr[key] === "object" ? this.deepCopy(arr[key]) : arr[key];
            }
        }
        return newObj;
    }
};
